Repository navigation
Bound repeated failure and eviction telemetry - #2148
Merged
Tyrie Vella (tyrielv) merged 3 commits intoNov 5, 2026
Merged
Tyrie Vella (tyrielv) merged 3 commits into
Tyrie Vella (tyrielv) merged 3 commits into
Conversation
Keep diagnostic samples and exact per-layer observation counts on the telemetry pipe. Preserve direct local error logs and retry behavior. Distinguish direct breaker rejections from companion errors. Use AggregationResult without changes to legacy HRESULT fields. Add regression tests for counter keys, disposal delivery, cache-lock boundaries, breaker-state observations, and requestor annotations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: GPT-6.1 Sol Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
Tyrie Vella (tyrielv)
force-pushed
the
tyrielv/telemetry-storm-control
branch
from
November 5, 2026 19:27
35305e0 to
1c62255
Compare
Preserve the hydration-summary pipe tests and the telemetry aggregation tests in the combined listener fixture. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: GPT-6.1 Sol Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
Tyrie Vella (tyrielv)
marked this pull request as ready for review
November 5, 2026 19:52
|
[KeithBot]: Validation
Also confirmed (raised by others, reproduced by us): T4485934340 (ShiningMassXAcc) 🤖 KeithBot · claude-opus-5.5, gpt-6.1-sol, gemini-4-argon · reply on a thread to dispute |
Omit command-session context from cross-command summaries. Keep breaker samples separate by previous and destination state. Record the latest observation timestamp in summary counters. Add real-pipe tests for command changes, recovery samples, and bounded repeated transitions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: GPT-6.1 Sol Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
|
[KeithBot]: ✅ Resolved · iteration 4 (
Validation
Approving. 🤖 KeithBot · claude-opus-5.5, gpt-6.1-sol, gemini-4-argon · reply on a thread to dispute |
Keith Klein (KeithIsSleeping)
approved these changes
Nov 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and Context
An open circuit breaker rejects retry invocations locally, but each rejection can emit network-error telemetry. Hydration and size-enumeration layers emit additional errors for the same operation. Successful LRU evictions also emit one telemetry event per eviction.
These repeated events can exhaust telemetry capacity and obscure genuine HTTP failures. Error counts across these layers do not represent HTTP requests or unique failed hydrations.
Changes
Classify local breaker rejections with a dedicated exception. Annotate standard and custom handlers without changes to callbacks, retries, cancellation, or functional results.
Distinguish direct hydration-retrier rejection from companion errors. Direct rejections use
Rejected; nested-download and virtualizer companions useFailed.Bound known repetitive events at the telemetry daemon listener. Keep one diagnostic sample per key per interval, with at most 64 keys and a separate overflow counter.
Emit
TelemetrySummaryevents with observed, sampled, suppressed, and overflow counts. Use 60-second intervals that flush on subsequent traffic, plus a disposal flush. Idle periods can delay summaries.Use
TelemetrySchemaVersion=3andAggregationResultfor the aggregation outcome. Preserve legacyresultfields and HRESULT values without case-only JSON key collisions.Exclude SHA, paths, request IDs, command IDs, and exception text from aggregation keys. Forward unfamiliar errors and actual HTTP/authentication retry failures unchanged.
Omit gitCommandSessionId from cross-command summaries. Preserve command context on individual samples.
Retain every repeated error in direct local logs. Downstream ETW consumers receive the bounded pipe stream, not the suppressed raw events.
Report observed breaker states without changes to thresholds or probes. Require a recorded cooldown expiry before a
CooldownElapsedobservation, and skip inconsistent snapshots.Group breaker samples by PreviousState and destination AggregationResult. Add LastObservedAtUtc to summaries without changes to retry decisions.
Batch eviction diagnostics outside cache locks. Keep successful removals and failed eviction attempts in separate counters.
Add unit tests for concurrent counters, key dimensions, overflow, wire fields, first-observation timestamps, and weighted eviction outcomes. The eviction test verifies its representative snapshot and cross-thread cache access during telemetry.
Add unit tests for direct and companion classifications, failure-triggered breaker states, requestor tracer propagation, and missing child sizes. These tests verify unchanged cancellation, failure callbacks, and command completion.
Add unit tests that reconnect a real pipe and verify shared child-tracer limits and complete local diagnostics. A disposal test verifies summary delivery and legacy HRESULT preservation.
Add unit tests that switch command sessions and separate initial Accepting from subsequent recovery. These tests verify bounded repeated transitions and latest timestamps.
Summary counters describe per-layer observations, not unique failures.
ObservedCountalready includes the diagnostic samples. Transition summaries retain their latest receipt timestamp, not a complete ordered history or proof of service-wide recovery.Known gaps and deliberate decisions